/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package beans;
import java.text.SimpleDateFormat;
import java.util.Calendar;
/**
 *
 * @author Shadow
 */
public class Pedido {
    private int idPedido;
    private Punto _ubicacion;
    private Punto _destino;
    private int _demanda;
    private Calendar _fechaPedido;
    private Calendar _fechaEntregaMax;
    private Calendar _fechaEntregaReal;
    private int _prioridad;
    //Datos redundantes usados para interactuar con el reloj interno del software
    private int _ventanaTiempoMinutos;
    private long _tiempoPedido;
    private long _tiempoVencimiento;
    private long _tiempoEntrega;
    private String _estadoPedido;
    private int _idCliente;
    private int _tiempoEstimadoLlegada;

    public int getTiempoEstimadoLlegada() {
        return _tiempoEstimadoLlegada;
    }

    public void setTiempoEstimadoLlegada(int _tiempoLlegada) {
        this._tiempoEstimadoLlegada = _tiempoLlegada;
    }
    
    public Calendar getFechaPedido() {
        return _fechaPedido;
    }

    public void setFechaPedido(Calendar _fechaPedido) {
        this._fechaPedido = _fechaPedido;
    }

    public Calendar getFechaEntregaMax() {
        return _fechaEntregaMax;
    }

    public void setFechaEntregaMax(Calendar _fechaEntregaMax) {
        this._fechaEntregaMax = _fechaEntregaMax;
    }

    public Calendar getFechaEntregaReal() {
        return _fechaEntregaReal;
    }

    public void setFechaEntregaReal(Calendar _fechaEntregaReal) {
        this._fechaEntregaReal = _fechaEntregaReal;
    }

    public int getIdCliente() {
        return _idCliente;
    }

    public void setIdCliente(int _idCliente) {
        this._idCliente = _idCliente;
    }

    public String getEstadoPedido() {
        return _estadoPedido;
    }
    

    public Pedido(int x, int y, int nPaq, int tiempoEntrega, Calendar fechaPedido, int idPedidoInt, String estadoPedido) {

        _destino = Mapa.getPunto(x, y);
        _demanda = nPaq;
        _fechaPedido = fechaPedido;
        _prioridad = tiempoEntrega;
        _fechaEntregaMax = (Calendar)_fechaPedido.clone();
        _fechaEntregaMax.add(Calendar.HOUR_OF_DAY, tiempoEntrega);
        idPedido=idPedidoInt;
        _estadoPedido=estadoPedido;
                

    }
    public Calendar getFechaVencimiento(){
        return _fechaEntregaMax;
    }
    public Punto getUbicacion() {
        return _ubicacion;
    }
    public void setUbicacion(Punto _ubicacion) {
        this._ubicacion = _ubicacion;
    }

    public Punto getDestino() {
        return _destino;
    }

    public void setDestino(Punto _destino) {
        this._destino = _destino;
    }
    
    public int getDemanda() {
        return _demanda;
    }
    public void setDemanda(int _demanda) {
        this._demanda = _demanda;
    }
    public String getFechaString(Calendar fecha,String formato){
        SimpleDateFormat sdf= new SimpleDateFormat(formato);
        return sdf.format(fecha.getTime());
    }
    public int getHoraPedido() {
        return Integer.parseInt(getFechaString(_fechaPedido,"HH"));
    }
    public int getMinutoPedido() {
        return Integer.parseInt(getFechaString(_fechaPedido,"mm"));
    }
    public int getHoraEntregaMax() {
        return Integer.parseInt(getFechaString(_fechaEntregaMax,"HH"));
    }
    public int getMinutoEntregaMax() {
        return Integer.parseInt(getFechaString(_fechaEntregaMax,"mm"));
    }

    public int getHoraEntregaReal() {
        return Integer.parseInt(getFechaString(_fechaEntregaReal,"HH"));
    }

    public int getMinutoEntregaReal() {
        return Integer.parseInt(getFechaString(_fechaEntregaReal,"mm"));
    }
    public long getVentanaTiempoMinutos() {
        return _ventanaTiempoMinutos;
    }

    public void setVentanaTiempoMinutos(int _ventanaTiempoMinutos) {
        this._ventanaTiempoMinutos = _ventanaTiempoMinutos;
    }

    public long getTiempoPedido() {
        return _tiempoPedido;
    }

    public void setTiempoPedido(long _tiempoPedido) {
        this._tiempoPedido = _tiempoPedido;
    }

    public long getTiempoVencimiento() {
        return _tiempoVencimiento;
    }

    public void setTiempoVencimiento(long _tiempoVencimiento) {
        this._tiempoVencimiento = _tiempoVencimiento;
    }

    public long getTiempoEntrega() {
        return _tiempoEntrega;
    }

    public void setTiempoEntrega(long _tiempoEntrega) {
        this._tiempoEntrega = _tiempoEntrega;
    }

    public int getPrioridad() {
        return _prioridad;
    }

    public void setPrioridad(int _prioridad) {
        this._prioridad = _prioridad;
    }

    /**
     * @return the idPedido
     */
    public int getIdPedido() {
        return idPedido;
    }

    /**
     * @param idPedido the idPedido to set
     */
    public void setIdPedido(int idPedido) {
        this.idPedido = idPedido;
    }
    
}